package com.slz3.business.module.orderManagement.ordRefund.domain;

import com.slz3.business.frame.enums.AuditFlag;
import com.slz3.business.frame.enums.UsingFlag;
import com.slz3.business.frame.functions.Add;
import com.slz3.business.frame.functions.Modify;
import com.slz3.business.frame.module.DomainEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.validator.constraints.Length;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

import java.time.LocalDateTime;
import java.util.UUID;

import static javax.persistence.EnumType.STRING;

@MappedSuperclass
@Data
@EqualsAndHashCode(callSuper = false)
public class OrdRefundEntity extends DomainEntity {

    /**
     * 编号
     */
    @Column(length = 80)
    @NotNull(message = "serNum 必须非空!", groups = {Add.class, Modify.class})
    @Length(min = 1, max = 80, message = "ser2 必须非空并且不超过 80 个字符!", groups = {Add.class, Modify.class})
    private String serNum;

    /**
     * 备注
     */
    @Basic(fetch = FetchType.LAZY)
    @Type(type = "text")
    private String serMemo;

    /**
     * 审核状态
     */
    @Enumerated(STRING)
    //@NotNull(message = "serAudit 必须非空!", groups = {Add.class, Modify.class})
    private AuditFlag serAudit;

    /**
     * 启用状态
     */
    @Enumerated(STRING)
    //@NotNull(message = "serUsing 必须非空!", groups = {Add.class, Modify.class})
    private UsingFlag serUsing;

    /**
     * 标签
     */
    private String serLabels;

    //原始数据库的字段 -- 新系统不用了 private int  `return_deleted` int(11) DEFAULT '0' COMMENT '0存在1删除（撤回）',
    //原始数据库的字段 -- 新系统不用了 private int   `id` bigint(11) NOT NULL AUTO_INCREMENT,
    /**
     * 订单ID
     * 原始数据库字段类型 `order_id` bigint(11) DEFAULT NULL COMMENT '',
     */
    private UUID serOrderId;
    /**
     * 用户ID
     * 原始数据库字段类型 ``user_id` bigint(11) DEFAULT NULL COMMENT '',
     */
    private UUID serUserId;
    /**
     * 图片用户上传的
     * 原始数据库字段类型 `img` longtext COMMENT '图片用户上传的',
     */
    private String serImg;
    /**
     * 1未审核
     * 2审核成功（退款中）
     * 3审核失败
     * 4退款成功
     * 原始数据库字段类型 `state` int(11) DEFAULT NULL COMMENT '1未审核 2审核成功（退款中） 3审核失败  4退款成功',
     */
    private AuditStateEnum serAuditState;
    //private  `updated_date` varchar(100) DEFAULT NULL,
    //`created_date` varchar(100) DEFAULT NULL,
    /**
     * 用户退货理由
     * 1 不喜欢
     * 2物流太慢
     * 3服务态度不好
     * 4拍错了
     * 5地址填错了
     * 原始数据库字段类型 `user_reason` int(11) DEFAULT NULL COMMENT '用户退货理由1 不喜欢2物流太慢3服务态度不好4拍错了5地址填错了',
     */
    @Enumerated(STRING)
    private UserReasonEnum serUserReason;
    /**
     * 审核文字说明
     * 原始数据库字段类型 `review_reason` longtext COMMENT '审核文字说明',
     */
    private String serReviewResason;

    /**
     * 退款编码
     * 原始数据库字段类型 `coding` varchar(200) DEFAULT NULL COMMENT '退款编码',
     */
    private String serCoding;
    /**
     * 商品单价
     * 原始数据库字段类型  `price` double DEFAULT NULL COMMENT '商品单价',,
     */
    private double serPrice;

    /**
     * 退货数量
     * 原始数据库字段类型 `count` int(11) DEFAULT NULL COMMENT '退货数量',
     */
    private Integer serCount;

    /**
     * 退款支付时间
     * 原始数据库字段类型 `pay_date` varchar(100) DEFAULT NULL COMMENT '退款支付时间',
     */
    private LocalDateTime serPayDate;

    /**
     * 物流单号
     * 原始数据库字段类型 ``logistics_num` varchar(200) DEFAULT NULL COMMENT '物流单号',
     */
    private String serLogisticsNum;
}
